From: Ben Hutchings Date: Thu, 26 Oct 2017 20:38:57 +0000 (+0200) Subject: Revert "bpf: one perf event close won't free bpf program attached ..." X-Git-Tag: archive/raspbian/4.9.80-2+rpi1~8^2~9 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=e2583e5362e400be56ea83d72cd2d162eb54fbec;p=linux-4.9.git Revert "bpf: one perf event close won't free bpf program attached ..." This reverts commit dcc738d393156dd29ed961ecefe13d96ed5f782f, which was commit ec9dd352d591f0c90402ec67a317c1ed4fb2e638 upstream. It introduces an ABI break that's not easily avoidable. The bug it fixes doesn't seem to have any security impact. Gbp-Pq: Topic debian Gbp-Pq: Name revert-bpf-one-perf-event-close-won-t-free-bpf-program-atta.patch --- diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index ba57266d9e80..be007610ceb0 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -273,7 +273,6 @@ struct trace_event_call { int perf_refcount; struct hlist_head __percpu *perf_events; struct bpf_prog *prog; - struct perf_event *bpf_prog_owner; int (*perf_perm)(struct trace_event_call *, struct perf_event *); diff --git a/kernel/events/core.c b/kernel/events/core.c index 2cc5ed1adac0..031c0379e60c 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7891,7 +7891,6 @@ static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd) } } event->tp_event->prog = prog; - event->tp_event->bpf_prog_owner = event; return 0; } @@ -7906,7 +7905,7 @@ static void perf_event_free_bpf_prog(struct perf_event *event) return; prog = event->tp_event->prog; - if (prog && event->tp_event->bpf_prog_owner == event) { + if (prog) { event->tp_event->prog = NULL; bpf_prog_put(prog); }